/*
 *  Copyright (C) void Team 2010 Pedro Batista
 * 
 *  http://code.google.com/p/capacitec
 * 
 *  This file is part of capacitec.
 * 
 *  capacitec is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 * 
 *  capacitec is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 * 
 *  You should have received a copy of the GNU General Public License
 *  along with capacitec.  If not, see <http://www.gnu.org/licenses/>.
 */

package controller;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import dao.CursoDao;
import dao.FacilitadorDao;
import dao.TurmaDao;
import entidades.Turma;
import seguranca.anotacoes.RestritoCoordenador;
import util.CursoEFacilitador;

/**
 *
 * @author pedro
 */
@Resource
public class TurmaController {

	private final TurmaDao turmaDao;
	private final FacilitadorDao facilitadorDao;
	private final CursoDao cursoDao;
	private final Result result;

	/**
	 *
	 * @param turmaDao
	 * @param facilitadorDao
	 * @param cursoDao
	 * @param result
	 */
	public TurmaController(TurmaDao turmaDao, FacilitadorDao facilitadorDao, CursoDao cursoDao, Result result) {
		this.turmaDao = turmaDao;
		this.facilitadorDao = facilitadorDao;
		this.cursoDao = cursoDao;
		this.result = result;
	}

	/**
	 * Mostra formulário para preencher dados de uma nova turma.
	 * @return dados de curso e facilitador para serem selecionados.
	 */
	@Get
	@Path("/turma/novo")
	@RestritoCoordenador
	public CursoEFacilitador formulario(){
		//TODO: chegar se número de vagas bate com o número de vagas no subprograma.
		return new CursoEFacilitador(cursoDao.carrega(), facilitadorDao.carrega());
	}

	/**
	 * Adiciona uma nova turma ao banco.
	 * @param turma turma a ser adicionada.
	 */
	@Post
	@Path("/turma")
	@RestritoCoordenador
	public void adiciona(Turma turma){
		turmaDao.salva(turma);
		result.redirectTo(TurmaController.class).formulario();
	}
}
